/*
Copyright 2011 Raymond Giorgi

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
 */

package edu.pitt.cs3530.objects.utilization;

import java.io.Serializable;

import edu.pitt.cs3530.objects.utilization.StatFactory.UtilizationStat;

/**
 * 
 */
public class UtilizationFactory {

	public static class Utilization implements Serializable {
		private double used;
		private double idle;
		private double blocked;
		private Utilization child;

		private Utilization() {
		}

		public void setUsed(double used) {
			this.used = used;
		}

		public void setIdle(double idle) {
			this.idle = idle;
		}

		public void setBlocked(double blocked) {
			this.blocked = blocked;
		}

		public double getUsed() {
			return used;
		}

		public double getIdle() {
			return idle;
		}

		public double getBlocked() {
			return blocked;
		}

		private void addChild(Utilization util) {
			this.child = util;
		}

		public Utilization getChild() {
			return child;
		}
	}

	public static Utilization createUtilization(UtilizationStat firstStat,
			UtilizationStat secondStat) {
		Utilization util = new Utilization();
		util.setBlocked(secondStat.getBlocked(firstStat));
		util.setIdle(secondStat.getIdle(firstStat));
		util.setUsed(secondStat.getUtilization(firstStat));
		return util;
	}

	public static Utilization createUtilization(UtilizationStat firstStat,
			UtilizationStat secondStat, Utilization child) {
		Utilization util = createUtilization(firstStat, secondStat);
		util.addChild(child);
		return util;
	}
}
